package com.chiyoyo.multipay.framework.core.client;


/**
 * @author chil
 * 支付客户端的工厂接口
 */
public interface PayClientFactory {

    /**
     * 获得支付客户端
     *
     * @param channelCode 渠道编码
     * @return 支付客户端
     */
    PayClient getPayClient(String channelCode);

    /**
     * 创建支付客户端
     *
     * @param channelCode 渠道编码
     * @param config      支付配置
     * @param <Config>    支付配置的泛型
     */
    <Config extends PayClientConfig> void createOrUpdatePayClient(String channelCode, Config config);

//    /**
//     * 注册支付客户端 Class，用于模块中实现的 PayClient
//     *
//     * @param channel        支付渠道的编码的枚举
//     * @param payClientClass 支付客户端 class
//     */
//    void registerPayClientClass(PayChannelEnum channel, Class<?> payClientClass);

}
